package day230329;

import java.util.Scanner;

/**
 * @author 兴趣使然黄小黄
 * @version 1.0
 * @date 2023/3/29 22:11
 * 密码等级
 */
public class Main {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String password = scan.nextLine(); // 接收密码串
        int cipherScore = cipherScore(password);
        int charScore = charScore(password);
        int numScore = numScore(password);
        int signScore = signScore(password);
        // 计算总分, 考虑计算奖励分
        int bonusPoints = 0; // 表示奖励分
        if (numScore > 0 && charScore > 0) {
            // 有奖励分的情况
            if (charScore == 20 && signScore > 0) {
                bonusPoints = 5;
            } else if (signScore > 0) {
                bonusPoints = 3;
            } else {
                bonusPoints = 2;
            }
        }
        int score = cipherScore + charScore + numScore + signScore + bonusPoints; // 总分
        // 计算等级
        String grade = getGrade(score);
        System.out.print(grade);
    }

    // 计算密码长度分数
    private static int cipherScore(String password) {
        int length = password.length();
        if (length >= 8) {
            return 25;
        } else if (length >= 5){
            return 10;
        } else {
            return 5;
        }
    }

    // 计算字母加分
    private static int charScore(String password) {
        int lowercaseCount = 0; // 计算小写字母出现次数
        int uppercaseCount = 0; // 计算大写字母出现的次数
        // 遍历密码, 并计数
        for (char c : password.toCharArray()) {
            if (c >= 'A' && c <= 'Z') {
                uppercaseCount++;
            }
            if (c >= 'a' && c <= 'z') {
                lowercaseCount++;
            }
        }
        // 计算分数
        if (uppercaseCount > 0 && lowercaseCount > 0) {
            // 如果大小写混合
            return 20;
        } else if (uppercaseCount == 0 && lowercaseCount == 0) {
            // 如果没有字母
            return 0;
        } else {
            // 包含小写字母或者大写字母
            return 10;
        }
    }

    // 计算数字加分
    private static int numScore(String password) {
        int numCount = 0; // 统计数字出现的次数
        // 遍历统计
        for (char c : password.toCharArray()) {
            if (c >= '0' && c <= '9') {
                numCount++;
            }
        }
        // 计算分数
        if (numCount > 1) {
            return 20;
        } else if (numCount == 0) {
            return 0;
        } else {
            return 10;
        }
    }

    // 计算符号加分
    private static int signScore(String password) {
        int signCount = 0; // 符号出现的次数
        for (char c : password.toCharArray()) {
            if ((c >= 0x21 && c <= 0x2F)
             || (c >= 0x3A && c <= 0x40)
             || (c >= 0x5B && c <= 0x60)
             || (c >= 0x7B && c <= 0x7E)) {
                signCount++;
            }
        }
        if (signCount > 1) {
            return 25;
        } else if (signCount == 0) {
            return 0;
        } else {
            return 10;
        }
    }

    // 根据总分分数返回等级的字符串
    private static String getGrade(int score) {
        if (score >= 90) {
            return "VERY_SECURE";
        } else if (score >= 80) {
            return "SECURE";
        } else if (score >= 70) {
            return "VERY_STRONG";
        } else if (score >= 60) {
            return "STRONG";
        } else if (score >= 50) {
            return "AVERAGE";
        } else if (score >= 25) {
            return "WEAK";
        } else {
            return "VERY_WEAK";
        }
    }
}
